﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace ContosoUniversity.Models
{
    public class Department
    {
        public int DepartmentID { get; set; }

        [StringLength(50, MinimumLength = 3)]
        public string Name { get; set; }

        [DataType(DataType.Currency)]
        [Column(TypeName = "money")]
        public decimal Budget { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        [Display(Name = "Start Date")]
        public DateTime StartDate { get; set; }

        [Timestamp]
        public byte[] RowVersion { get; set; }


        // 一个系可能有也可能没有管理员，而管理员始终是讲师。 
        // 因此 InstructorID 属性作为 Instructor 实体内外键，且 int 类型指定后跟有一个问号，将该属性标记为可为 null。 
        // 导航属性名为 Administrator，但其中包含 Instructor 实体

        //按照约定，Entity Framework 能针对不可为 null 的外键和多对多关系启用级联删除。

        //TODO: 可为NULL之后的级联删除怎么做?
        public int? InstructorID { get; set; }
        public Instructor Administrator { get; set; }

        //一个系可以有多门课程，因此存在 Course 导航属性
        public ICollection<Course> Courses { get; set; }
    }
}